﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JeuDeDames_v1._02
{
    public class Piece
    {
        #region Constantes
        public const int BLANC = -1;
        public const int NOIR = 1; 
        #endregion

        #region Propriétés
        public int pos; //position de la piece;
        public Joueur j;    //joueur à qui appartient la piece;
        public int pas; //1 pour le pion 10 pour dame; 
        protected bool adv;   //sert uniquement pour l'affichage du pion lors d'un mangeage multiple.
        #endregion

        #region Méthodes
        public void seDeplacer(Coup coup)
        {
            try
            {
                if (!coup.mange())  //si le coup ne mange pas
                {
                    if (coup.dest.vide())    //si la case destination du coup est vide;
                    {
                        if (coup.orig.piece == this)    //si la coup déplace la bonne piece;
                        {
                            coup.dest.piece = this;      //on copie la piece dans dest;
                            coup.orig.piece = null;                 //on l'a supprime dans orig;
                            coup.dest.piece.pos = coup.dest.pos;    //on modifie la position de la piece;
                        }
                    }
                }
            }
            catch (NullReferenceException) { }
        }//seDeplacer(); déplace la piece du coup de la case orig en dest;

        public void mange(Coup coup)
        {
            try
            {
                if (coup.mange())   //si le coup mange
                {
                    if (coup.dest.vide())
                    {
                        if (coup.pMangee.piece.j.couleur != this.j.couleur)  //Si la piece a Manger est de couleur adverse
                        {
                            if (coup.orig.piece == this)
                            {
                                coup.dest.piece = coup.orig.piece;      //on copie la piece dans dest;
                                coup.orig.piece = null;                 //on l'a supprime dans orig;
                                coup.dest.piece.pos = coup.dest.pos;    //on modifie la position de la piece;
                                coup.pMangee.piece.j.lesPieces.Remove(coup.pMangee.piece);  //on supprime de la liste du joueur.
                                coup.pMangee.piece.j.nbPieces--;
                                /*on met "momentanément" un pion du joueur à la place*/
                                if (coup.pMangee.piece is Pion)
                                    coup.pMangee.piece = new Pion(coup.pMangee.pos, this.j, true);
                                else
                                    coup.pMangee.piece = new Dame(coup.pMangee.pos, this.j, true);
                                coup.j.piecesMangees.Add(coup.pMangee.pos);             //on retire tous les "pions fictifs".
                                if (coup.pPrise is Dame)
                                {
                                    coup.pPrise.j.nbDames--;   //Si une dame est mangé, nbDames est décrémenté.
                                }
                            }
                        }
                    }
                }
            }
            catch (NullReferenceException) { }
        }//mange(); 
        #endregion
    }
}
